<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>默认参数作用域&TDZ</title>
</head>
<body>
<script>
    /*
    * 函数参数其实是一个数组
    * 函数参数可以理解为函数内部的局部变量 只不过赋值是可以使用外部赋值
    *
    * */

    function foo1(a = 100) {

    }

    function foo2(){
        let a =100
    }

    /*
    * 既然相当于函数内部的局部变量 那么函数多个参数就相当于在函数体内定义多个局部变量
    * 定义局部变量是有前后顺序的 同理函数参数的默认值赋值也是有顺序的
    * */

    /*
    * 注意下面不能颠倒顺序写 因为 b = a时 a还没有赋值
    * b  =  a   a = 100
    * */
    function foo3(a = 100, b = a) {

    }

    /*
    * 可以把参数列表内的默认赋值当成是写在函数体最上面的赋值 所以它不能访问到函数体中的数据 TDZ
    * */
    function foo4(a = num) {
        let num = 100
    }



</script>
</body>
</html>